﻿/**
* jQuery EasyUI 1.4.3
* Copyright (c) 2009-2015 www.jeasyui.com. All rights reserved.
*
* Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt
* To use it on other terms please contact us at info@jeasyui.com
* http://www.jeasyui.com/license_commercial.php
*
* jQuery EasyUI form 组件扩展
* jeasyui.extensions.datagrid.autoFocus.js
*
* 依赖项：
*   1、jquery.jdirk.js
*/
(function () {

    $.util.namespace("$.fn.form.extensions");

    var enableAutoFocus = function (target) {

        var rCRLF = /\r?\n/g,
            rsubmitterTypes = /^(?:submit|button|image|reset)$/i,
            rsubmittable = /^(?:input|select|textarea|keygen)/i;

        var targetJq = $(target);
        var list2 = targetJq.map(function () {
            var elements = jQuery.prop(this, "elements");
            return $.merge([], elements ? $.makeArray(elements) : $(this).find("*"));
        });
        //console.log("******容器map结果********");
        //console.log(list2);
        var list3 = list2.filter(function () {
            //此处应过滤出 可见的input，但easyui渲染input时会这样处理：
            //1、移除原input中的name属性，并隐藏原input
            //2、用原input的name属性，创建一个hidden控件，该input表示控件的value存储容器（序列化时取这个value）
            //3、创建一个可视的input，该input没有name属性
            //步骤3中创建的可视input就是需要过滤出来的dom
            return !$(this).is(":disabled") && !$(this).is(":hidden") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(this.type);
        });
        //console.log("******过滤结果********");
        //console.log(list3);
        var len = list3.length;
        list3.each(function (index, el) {
            $(el).keydown(function (e) {
                if (e.which == 13) {
                    if ((index + 1) < len) {
                        //console.log(list3[index + 1]);
                        list3[index + 1].focus();
                    }
                }
            });
        });

    };

    var methods = $.fn.form.extensions.methods = {

        //  扩展 easyui-form 的自定义方法；开启表单内的控件回车后自动定位到下一个控件的功能：
        //  返回值：返回表示当前 easyui-datagrid 控件的 jQuery 链式对象；
        enableAutoFocus: function (jq) { return jq.each(function () { enableAutoFocus(this); }); }
    };

    var defaults = $.fn.form.extensions.defaults = {

    };

    $.extend($.fn.form.defaults, defaults);
    $.extend($.fn.form.methods, methods);

})(jQuery);